Skip to main content

Nebula Labs API v0.1.0

Nebula Labs API v0.1.0

This is the full open API Specification. If you want to know something about the API and weren't able to find it elsewhere in our documentation, you should be able to find it here, just with less examples and detail.

If there is an issue or you are still unable to find what you are looking forward, please reach out to engineering@utdnebula.com

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

The public Nebula Labs API for access to pertinent UT Dallas data

Email: Eric Boysen License: MIT License

Default

get__course

Code samples

# You can also use wget
curl -X GET /course \
-H 'Accept: application/json'

GET /course HTTP/1.1

Accept: application/json

const headers = {
Accept: 'application/json',
};

fetch('/course', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/course',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/course', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/course', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/course");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/course", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /course

Returns all courses matching the query's string-typed key-value pairs

Parameters

NameInTypeRequiredDescription
course_numberquerystringfalseThe course's official number
subject_prefixquerystringfalseThe course's subject prefix
titlequerystringfalseThe course's title
descriptionquerystringfalseThe course's description
schoolquerystringfalseThe course's school
credit_hoursquerystringfalseThe number of credit hours awarded by successful completion of the course
class_levelquerystringfalseThe level of education that this course course corresponds to
activity_typequerystringfalseThe type of class this course corresponds to
gradingquerystringfalseThe grading status of this course
internal_course_numberquerystringfalseThe internal (university) number used to reference this course
lecture_contact_hoursquerystringfalseThe weekly contact hours in lecture for a course
offering_frequencyquerystringfalseThe frequency of offering a course

Example responses

200 Response

[
{
"_id": "string",
"course_number": "string",
"subject_prefix": "string",
"title": "string",
"description": "string",
"school": "string",
"credit_hours": "string",
"class_level": "string",
"activity_type": "string",
"grading": "string",
"internal_course_number": "string",
"prerequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"corequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"lecture_contact_hours": "string",
"laboratory_contact_hours": "string",
"offering_frequency": "string"
}
]

Responses

StatusMeaningDescriptionSchema
200OKA list of coursesInline

Response Schema

Status Code 200

NameTypeRequiredRestrictionsDescription
anonymous[Course]falsenonenone
» _idstringtruenonenone
» course_numberstringtruenonenone
» subject_prefixstringtruenonenone
» titlestringtruenonenone
» descriptionstringtruenonenone
» schoolstringtruenonenone
» credit_hoursstringtruenonenone
» class_levelstringtruenonenone
» activity_typestringtruenonenone
» gradingstringtruenonenone
» internal_course_numberstringtruenonenone
» prerequisitesobjectfalsenonenone
»» namestringtruenonenone
»» requiredintegertruenonenone
»» options[Requirement]truenonenone
»»» typeanytruenonenone

allOf - discriminator: type

NameTypeRequiredRestrictionsDescription
»» anonymousobjectfalsenonenone

and

NameTypeRequiredRestrictionsDescription
»» anonymousobjectfalsenonenone

continued

NameTypeRequiredRestrictionsDescription
» corequisitesobjectfalsenonenone
» lecture_contact_hoursstringtruenonenone
» laboratory_contact_hoursstringtruenonenone
» offering_frequencystringtruenonenone

get_course{id}

Code samples

# You can also use wget
curl -X GET /course/{id} \
-H 'Accept: application/json'

GET /course/{id} HTTP/1.1

Accept: application/json

const headers = {
Accept: 'application/json',
};

fetch('/course/{id}', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/course/{id}',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/course/{id}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/course/{id}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/course/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/course/{id}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /course/{id}

Returns the course with given ID

Parameters

NameInTypeRequiredDescription
idpathstringtrueID of the course to get

Example responses

200 Response

{
"_id": "string",
"course_number": "string",
"subject_prefix": "string",
"title": "string",
"description": "string",
"school": "string",
"credit_hours": "string",
"class_level": "string",
"activity_type": "string",
"grading": "string",
"internal_course_number": "string",
"prerequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"corequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"lecture_contact_hours": "string",
"laboratory_contact_hours": "string",
"offering_frequency": "string"
}

Responses

StatusMeaningDescriptionSchema
200OKA courseCourse

get_degree{id}

Code samples

# You can also use wget
curl -X GET /degree/{id}

GET /degree/{id} HTTP/1.1

fetch('/degree/{id}', {
method: 'GET',
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

result = RestClient.get '/degree/{id}',
params: {
}

p JSON.parse(result)

import requests

r = requests.get('/degree/{id}')

print(r.json())

<?php

require 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/degree/{id}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/degree/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/degree/{id}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /degree/{id}

Returns the degree with given ID

Parameters

NameInTypeRequiredDescription
idpathstringtrueID of the degree to get

Responses

StatusMeaningDescriptionSchema
200OKA degreeNone

get__exam

Code samples

# You can also use wget
curl -X GET /exam \
-H 'Accept: application/json'

GET /exam HTTP/1.1

Accept: application/json

const headers = {
Accept: 'application/json',
};

fetch('/exam', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/exam',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/exam', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/exam', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/exam");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/exam", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /exam

Returns all exams matching the query's string-typed key-value pairs

Parameters

NameInTypeRequiredDescription
typequerystringfalseThe type of exam
namequerystringfalseThe name of the exam
levelquerystringfalseThe level of the IB exam (should it be an IB exam)

Example responses

200 Response

[
{
"_id": "string",
"type": "string"
}
]

Responses

StatusMeaningDescriptionSchema
200OKA list of examsInline

Response Schema

Status Code 200

NameTypeRequiredRestrictionsDescription
anonymous[Exam]falsenonenone
» _idstringtruenonenone
» typestringtruenonenone

get_exam{id}

Code samples

# You can also use wget
curl -X GET /exam/{id} \
-H 'Accept: application/json'

GET /exam/{id} HTTP/1.1

Accept: application/json

const headers = {
Accept: 'application/json',
};

fetch('/exam/{id}', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/exam/{id}',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/exam/{id}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/exam/{id}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/exam/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/exam/{id}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /exam/{id}

Returns the exam with given ID

Parameters

NameInTypeRequiredDescription
idpathstringtrueID of the exam to get

Example responses

200 Response

{
"_id": "string",
"type": "string"
}

Responses

StatusMeaningDescriptionSchema
200OKAn examExam

get__professor

Code samples

# You can also use wget
curl -X GET /professor \
-H 'Accept: application/json'

GET /professor HTTP/1.1

Accept: application/json

const headers = {
Accept: 'application/json',
};

fetch('/professor', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/professor',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/professor', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/professor', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/professor");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/professor", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /professor

Returns all professors matching the query's string-typed key-value pairs

Parameters

NameInTypeRequiredDescription
first_namequerystringfalseThe professor's first name
last_namequerystringfalseThe professor's last name
titlesquerystringfalseOne of the professor's title
emailquerystringfalseThe professor's email address
phone_numberquerystringfalseThe professor's phone number
office.buildingquerystringfalseThe building of the location of the professor's office
office.roomquerystringfalseThe room of the location of the professor's office
office.map_uriquerystringfalseA hyperlink to the UTD room locator of the professor's office
profile_uriquerystringfalseA hyperlink pointing to the professor's official university profile
image_uriquerystringfalseA link to the image used for the professor on the professor's official university profile
office_hours.start_datequerystringfalseThe start date of one of the office hours meetings of the professor
office_hours.end_datequerystringfalseThe end date of one of the office hours meetings of the professor
office_hours.meeting_daysquerystringfalseOne of the days that one of the office hours meetings of the professor
office_hours.start_timequerystringfalseThe time one of the office hours meetings of the professor starts
office_hours.end_timequerystringfalseThe time one of the office hours meetings of the professor ends
office_hours.modalityquerystringfalseThe modality of one of the office hours meetings of the professor
office_hours.location.buildingquerystringfalseThe building of one of the office hours meetings of the professor
office_hours.location.roomquerystringfalseThe room of one of the office hours meetings of the professor
office_hours.location.map_uriquerystringfalseA hyperlink to the UTD room locator of one of the office hours meetings of the professor
sectionsquerystringfalseThe _id of one of the sections the professor teaches

Example responses

200 Response

[
{
"_id": "string",
"first_name": "string",
"last_name": "string",
"titles": ["string"],
"email": "string",
"phone_number": "string",
"office": {
"building": "string",
"room": "string",
"map_uri": "string"
},
"profile_uri": "string",
"image_uri": "string",
"office_hours": [
{
"start_date": "string",
"end_date": "string",
"meeting_days": ["string"],
"start_time": "string",
"end_time": "string",
"modality": "string",
"location": {
"building": "string",
"room": "string",
"map_uri": "string"
}
}
],
"sections": ["string"]
}
]

Responses

StatusMeaningDescriptionSchema
200OKA list of professorsInline

Response Schema

Status Code 200

NameTypeRequiredRestrictionsDescription
anonymous[Professor]falsenonenone
» _idstringtruenonenone
» first_namestringtruenonenone
» last_namestringtruenonenone
» titles[string]falsenonenone
» emailstringtruenonenone
» phone_numberstringfalsenonenone
» officeobjectfalsenonenone
»» buildingstringfalsenonenone
»» roomstringfalsenonenone
»» map_uristringfalsenonenone
» profile_uristringfalsenonenone
» image_uristringfalsenonenone
» office_hours[Meeting]falsenonenone
»» start_datestringfalsenonenone
»» end_datestringfalsenonenone
»» meeting_days[string]falsenonenone
»» start_timestringfalsenonenone
»» end_timestringfalsenonenone
»» modalitystringfalsenonenone
»» locationobjectfalsenonenone
» sections[string]falsenonenone

get_professor{id}

Code samples

# You can also use wget
curl -X GET /professor/{id} \
-H 'Accept: application/json'

GET /professor/{id} HTTP/1.1

Accept: application/json

const headers = {
Accept: 'application/json',
};

fetch('/professor/{id}', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/professor/{id}',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/professor/{id}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/professor/{id}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/professor/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/professor/{id}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /professor/{id}

Returns the professor with given ID

Parameters

NameInTypeRequiredDescription
idpathstringtrueID of the professor to get

Example responses

200 Response

{
"_id": "string",
"first_name": "string",
"last_name": "string",
"titles": ["string"],
"email": "string",
"phone_number": "string",
"office": {
"building": "string",
"room": "string",
"map_uri": "string"
},
"profile_uri": "string",
"image_uri": "string",
"office_hours": [
{
"start_date": "string",
"end_date": "string",
"meeting_days": ["string"],
"start_time": "string",
"end_time": "string",
"modality": "string",
"location": {
"building": "string",
"room": "string",
"map_uri": "string"
}
}
],
"sections": ["string"]
}

Responses

StatusMeaningDescriptionSchema
200OKA professorProfessor

get__section

Code samples

# You can also use wget
curl -X GET /section \
-H 'Accept: application/json'

GET /section HTTP/1.1

Accept: application/json

const headers = {
Authorization: { API_KEY },
Accept: 'application/json',
};

fetch('/section', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/section',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/section', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/section', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/section");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/section", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /section

Returns all courses matching the query's string-typed key-value pairs

Parameters

NameInTypeRequiredDescription
section_numberquerystringfalseThe section's official number
course_referencequerystringfalseAn id that points to the course in MongoDB that this section is an instantiation of
academic_session.namequerystringfalseThe name of the academic session of the section
academic_session.start_datequerystringfalseThe date of classes starting for the section
academic_session.end_datequerystringfalseThe date of classes ending for the section
professorsquerystringfalseOne of the professors teaching the section
teaching_assistants.first_namequerystringfalseThe first name of one of the teaching assistants of the section
teaching_assistants.last_namequerystringfalseThe last name of one of the teaching assistants of the section
teaching_assistants.rolequerystringfalseThe role of one of the teaching assistants of the section
teaching_assistants.emailquerystringfalseThe email of one of the teaching assistants of the section
internal_class_numberquerystringfalseThe internal (university) number used to reference this section
instruction_modequerystringfalseThe instruction modality for this section
meetings.start_datequerystringfalseThe start date of one of the section's meetings
meetings.end_datequerystringfalseThe end date of one of the section's meetings
meetings.meeting_daysquerystringfalseOne of the days that one of the section's meetings
meetings.start_timequerystringfalseThe time one of the section's meetings starts
meetings.end_timequerystringfalseThe time one of the section's meetings ends
meetings.modalityquerystringfalseThe modality of one of the section's meetings
meetings.location.buildingquerystringfalseThe building of one of the section's meetings
meetings.location.roomquerystringfalseThe room of one of the section's meetings
meetings.location.map_uriquerystringfalseA hyperlink to the UTD room locator of one of the section's meetings
core_flagsquerystringfalseOne of core requirement codes this section fulfills
syllabus_uriquerystringfalseA link to the syllabus on the web

Example responses

200 Response

[
{
"_id": "string",
"section_number": "string",
"course_reference": "string",
"section_corequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"academic_session": {
"name": "string",
"start_date": "string",
"end_date": "string"
},
"professors": ["string"],
"teaching_assistants": [
{
"first_name": "string",
"last_name": "string",
"role": "string",
"email": "string"
}
],
"internal_class_number": "string",
"instruction_mode": "string",
"meetings": [
{
"start_date": "string",
"end_date": "string",
"meeting_days": ["string"],
"start_time": "string",
"end_time": "string",
"modality": "string",
"location": {
"building": "string",
"room": "string",
"map_uri": "string"
}
}
],
"core_flags": ["string"],
"syllabus_uri": "string",
"grade_distribution": [0]
}
]

Responses

StatusMeaningDescriptionSchema
200OKA list of sectionsInline

Response Schema

Status Code 200

NameTypeRequiredRestrictionsDescription
anonymous[Section]falsenonenone
» _idstringtruenonenone
» section_numberstringtruenonenone
» course_referencestringtruenonenone
» section_corequisitesobjectfalsenonenone
»» namestringtruenonenone
»» requiredintegertruenonenone
»» options[Requirement]truenonenone
»»» typeanytruenonenone

allOf - discriminator: type

NameTypeRequiredRestrictionsDescription
»» anonymousobjectfalsenonenone

and

NameTypeRequiredRestrictionsDescription
»» anonymousobjectfalsenonenone

continued

NameTypeRequiredRestrictionsDescription
» academic_sessionobjecttruenonenone
»» namestringfalsenonenone
»» start_datestringfalsenonenone
»» end_datestringfalsenonenone
» professors[string]truenonenone
» teaching_assistants[Assistant]falsenonenone
»» first_namestringfalsenonenone
»» last_namestringfalsenonenone
»» rolestringfalsenonenone
»» emailstringfalsenonenone
» internal_class_numberstringtruenonenone
» instruction_modestringtruenonenone
» meetings[Meeting]truenonenone
»» start_datestringfalsenonenone
»» end_datestringfalsenonenone
»» meeting_days[string]falsenonenone
»» start_timestringfalsenonenone
»» end_timestringfalsenonenone
»» modalitystringfalsenonenone
»» locationobjectfalsenonenone
»»» buildingstringfalsenonenone
»»» roomstringfalsenonenone
»»» map_uristringfalsenonenone
» core_flags[string]falsenonenone
» syllabus_uristringtruenonenone
» grade_distribution[integer]falsenonenone

get_section{id}

Code samples

# You can also use wget
curl -X GET /section/{id} \
-H 'Accept: application/json'

GET /section/{id} HTTP/1.1

Accept: application/json

const headers = {
Accept: 'application/json',
};

fetch('/section/{id}', {
method: 'GET',

headers: headers,
})
.then(function (res) {
return res.json();
})
.then(function (body) {
console.log(body);
});
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json'
}

result = RestClient.get '/section/{id}',
params: {
}, headers: headers

p JSON.parse(result)

import requests
headers = {
'Accept': 'application/json'
}

r = requests.get('/section/{id}', headers = headers)

print(r.json())

<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/section/{id}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

URL obj = new URL("/section/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/section/{id}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}

GET /section/{id}

Returns the section with given ID

Parameters

NameInTypeRequiredDescription
idpathstringtrueID of the section to get

Example responses

200 Response

{
"_id": "string",
"section_number": "string",
"course_reference": "string",
"section_corequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"academic_session": {
"name": "string",
"start_date": "string",
"end_date": "string"
},
"professors": ["string"],
"teaching_assistants": [
{
"first_name": "string",
"last_name": "string",
"role": "string",
"email": "string"
}
],
"internal_class_number": "string",
"instruction_mode": "string",
"meetings": [
{
"start_date": "string",
"end_date": "string",
"meeting_days": ["string"],
"start_time": "string",
"end_time": "string",
"modality": "string",
"location": {
"building": "string",
"room": "string",
"map_uri": "string"
}
}
],
"core_flags": ["string"],
"syllabus_uri": "string",
"grade_distribution": [0]
}

Responses

StatusMeaningDescriptionSchema
200OKA sectionSection

Schemas

ALEKSExam

The ALEXS Exam is an exam required by all students for math placement upon admittance to the University. This Exam is used in leiu of credit for lower level math courses in the University.

{
"placement": [
{
"requirement": {
"type": null
},
"outcome": [["string"]]
}
],
"_id": "string",
"type": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
placement[Outcome]truenoneAn array of Outcomes for which the placement into the Course is earned. Does not include credit, only placement into the course.

allOf - discriminator: Exam.type

NameTypeRequiredRestrictionsDescription
anonymousExamfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

APExam

AP Exams are exams offered by College Board that are taken prior to college in order to earn college credit. Depending upon the score received, a student may be able to obtain different levels of credit for their success on the exam.

{
"name": "string",
"yields": [
{
"requirement": {
"type": null
},
"outcome": [["string"]]
}
],
"_id": "string",
"type": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
namestringtruenoneThe name of the exam
yields[Outcome]truenoneAn array of Outcomes for which the credit for the Course or Credit is received. Does not include placement, only actual credit.

allOf - discriminator: Exam.type

NameTypeRequiredRestrictionsDescription
anonymousExamfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

AcademicSession

An AcademicSession represents the time period in which courses takes place. This is normally most closely associated with a semester

{
"name": "string",
"start_date": "string",
"end_date": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
namestringfalsenoneThe name of the academic session in question.
start_datestringfalsenoneThe date of classes starting in the academic session.
end_datestringfalsenoneThe date of classes ending in the academic session.

Assistant

An 'Assistant' represents a teaching assistant at UT Dallas.

{
"first_name": "string",
"last_name": "string",
"role": "string",
"email": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
first_namestringfalsenoneThe first name of the assistant.
last_namestringfalsenoneThe last name of the assistant.
rolestringfalsenoneThe role of the assistant.
emailstringfalsenoneThe email address to contact the assistant.

CLEPExam

CLEP Exams are exams offered by College Board that are taken before or during college in order to earn college credit. Depending upon the score received, a student may be able to obtain different levels of credit for their success on the exam.

{
"name": "string",
"yields": [
{
"requirement": {
"type": null
},
"outcome": [["string"]]
}
],
"_id": "string",
"type": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
namestringtruenoneThe name of the exam
yields[Outcome]truenoneAn array of Outcomes for which the credit for the Course or Credit is received. Does not include placement, only actual credit.

allOf - discriminator: Exam.type

NameTypeRequiredRestrictionsDescription
anonymousExamfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

CSPlacementExam

The CS Placement Exam is an exam required of Computer Science students upon entry to the Erik Johnsson School of Computer Science. This exam can be used to place out of entry level computer science courses and obtain credit for them instead.

{
"yields": [
{
"requirement": {
"type": null
},
"outcome": [["string"]]
}
],
"_id": "string",
"type": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
yields[Outcome]truenoneAn array of Outcomes for which the credit for the Course or Credit is received. Does not include placement, only actual credit.

allOf - discriminator: Exam.type

NameTypeRequiredRestrictionsDescription
anonymousExamfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

ChoiceRequirement

{
"choices": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
choicesCollectionRequirementtruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

CollectionRequirement

{
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
namestringtruenonenone
requiredintegertruenonenone
options[Requirement]truenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

ConsentRequirement

{
"granter": "string",
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
granterstringtruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

CoreRequirement

{
"core_flag": "string",
"hours": 0,
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
core_flagstringtruenonenone
hoursintegertruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

Courses

Courses lay one level of abstraction above sections in the academic hierarchy at UTD. A course represents a class offered by a school at UTD.

A Course should not be confused with a Section which is the actual instantiation of a Course with a professor and dedicated meeting times.A course can have multiple sections associated with it every semester. An example of a course would be ECS1100.

This data will include important pieces of information that a relevant to every section of the course like its prerequisites and the number of credit hours. All of the attributes associated with a course are as follows:

Properties

NameTypeRequiredRestrictionsDescription
_idstringtruenoneThe primary key associated with a course
course_numberstringtruenoneThe course's official number
subject_prefixstringtruenoneThe course's subject prefix
titlestringtruenoneThe course's title
descriptionstringtruenoneThe course's description
schoolstringtruenoneThe course's school
credit_hoursstringtruenoneThe number of credit hours awarded by successful completion of the course
class_levelstringtruenoneThe level of education that this course course corresponds to
activity_typestringtruenoneThe type of class this course corresponds to
gradingstringtruenoneThe grading status of this course
internal_course_numberstringtruenoneThe internal (university) number used to reference this course
prerequisitesCollectionRequirementfalsenoneA Collection Requirement object containing a list of the courses that must be taken before this course
corequisitesCollectionRequirementfalsenoneA Collection Requirement object containing a list of the courses that must be taken before or alongside this course
lecture_contact_hoursstringtruenoneThe weekly contact hours in lecture for a course
laboratory_contact_hoursstringtruenoneThe weekly contact hours in laboratory for a course
offering_frequencystringtruenoneThe frequency of offering a course. The meanings of each letter can be found in the UTD Course Policies page. Example: "S", "Y", "T", "R" course
{
"_id": "string",
"course_number": "string",
"subject_prefix": "string",
"title": "string",
"description": "string",
"school": "string",
"credit_hours": "string",
"class_level": "string",
"activity_type": "string",
"grading": "string",
"internal_course_number": "string",
"prerequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"corequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"lecture_contact_hours": "string",
"laboratory_contact_hours": "string",
"offering_frequency": "string"
}

CourseRequirement

{
"class_reference": "string",
"minimum_grade": "string",
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
class_referencestringtruenonenone
minimum_gradestringtruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

Credit

The Credit object represents an amount of 'semester credit hours' given by The University of Texas at Dallas. A Credit should not be confused with a Course as semester credit hours serve only to fulfill credit hour requirements.

{
"category": "string",
"credit_hours": null
}

Properties

NameTypeRequiredRestrictionsDescription
categorystringtruenoneThe catergory of the credit hours. If there is no category associated with the credit, the value is "general". "free" is a valid category.
credit_hoursinttruenoneThe number of credit hours.

Exam

The default exam interface whose attributes are inherited by all other exam types.

{
"_id": "string",
"type": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
_idstringtruenoneThe MongoDB database id for the Exam object.
typestringtruenoneThe type of exam object this object represents.

ExamRequirement

{
"exam_reference": "string",
"minimum_score": 0,
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
exam_referencestringtruenonenone
minimum_scoreintegertruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

GPARequirement

{
"subset": "string",
"minimum": 0,
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
subsetstringfalsenonenone
minimumnumbertruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

HoursRequirement

{
"required": 0,
"options": [
{
"class_reference": "string",
"minimum_grade": "string",
"type": null
}
],
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
requiredintegertruenonenone
options[CourseRequirement]truenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

IBExam

International Baccalaureate (IB) Exams are exams offered by the IBO for students in secondary education to obtain credit for university level credit. Depending upon the score recieved on these exams, a student may be eligible for credit that can replace other required courses in their degree plan.

{
"name": "string",
"level": "string",
"yields": [
{
"requirement": {
"type": null
},
"outcome": [["string"]]
}
],
"_id": "string",
"type": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
namestringtruenoneThe name of the exam
levelstringtruenoneThe level of the IB exam.
yields[Outcome]truenoneAn array of Outcomes for which the credit for the Course or Credit is received. Does not include placement, only actual credit.

allOf - discriminator: Exam.type

NameTypeRequiredRestrictionsDescription
anonymousExamfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

LimitRequirement

{
"max_hours": 0,
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
max_hoursintegertruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

Location

A location on the UT Dallas campus.

{
"building": "string",
"room": "string",
"map_uri": "string"
}

Properties

NameTypeRequiredRestrictionsDescription
buildingstringfalsenoneThe building of the location.
roomstringfalsenoneThe room of the location.
map_uristringfalsenoneA hyperlink to the UTD room locator.

MajorRequirement

{
"major": "string",
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
majorstringtruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

Meeting

A 'Meeting' represents a recurring meeting. This schema can represent both recurring meetings and single meetings. Meetings occur repeatedly on the specified days of the week during a period. Non-recurring meetings should have the start_date equal to the end_date.

{
"start_date": "string",
"end_date": "string",
"meeting_days": ["string"],
"start_time": "string",
"end_time": "string",
"modality": "string",
"location": {
"building": "string",
"room": "string",
"map_uri": "string"
}
}

Properties

NameTypeRequiredRestrictionsDescription
start_datestringfalsenoneThe start date of a meeting.
end_datestringfalsenoneThe end date of a meeting.
meeting_days[string]falsenoneA list of all days the meeting occurs during the time period.
start_timestringfalsenoneThe time the meeting starts on each meeting day.
end_timestringfalsenoneThe time a meeting ends on each meeting day.
modalitystringfalsenoneThe modality of the meeting following the modality types in UTD's CourseBook.
locationLocationfalsenoneThe location of the meeting.

MinorRequirement

{
"minor": "string",
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
minorstringtruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

OtherRequirement

{
"description": "string",
"condition": "string",
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
descriptionstringtruenonenone
conditionstringtruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone

Outcome

An outcome describes the credit or course awarded for completion of an exam. It can fulfill an ExamRequirement, CourseRequirement, or result in some Credit awarded.

{
"requirement": {
"type": null
},
"outcome": [["string"]]
}

Properties

NameTypeRequiredRestrictionsDescription
requirementRequirementtruenoneThe requirement to achieve the associated outcome
outcome[array]truenoneThe set of sets of Courses and Credits which can result (awarded/placed into) should the requirement be met. The outer array contains the possible choices.

oneOf

NameTypeRequiredRestrictionsDescription
» anonymousstringfalsenonenone

xor

NameTypeRequiredRestrictionsDescription
» anonymousCreditfalsenonenone

Professor

Professors are a representation of an insturctor on campus for a Course. Professors can be queried to find information regarding their professional information and office hours information.

{
"_id": "string",
"first_name": "string",
"last_name": "string",
"titles": ["string"],
"email": "string",
"phone_number": "string",
"office": {
"building": "string",
"room": "string",
"map_uri": "string"
},
"profile_uri": "string",
"image_uri": "string",
"office_hours": [
{
"start_date": "string",
"end_date": "string",
"meeting_days": ["string"],
"start_time": "string",
"end_time": "string",
"modality": "string",
"location": {
"building": "string",
"room": "string",
"map_uri": "string"
}
}
],
"sections": ["string"]
}

Properties

NameTypeRequiredRestrictionsDescription
_idstringtruenoneThe MongoDB database id for the Professor object.
first_namestringtruenoneThe professor's first name.
last_namestringtruenoneThe professor's last name.
titles[string]falsenoneThe professor's titles. Example: ["Senior Mathematics Lecturer"], ["Lars Magnus Ericsson Chair", "Dean – Erik Jonsson School of Engineering and Computer Science"]
emailstringtruenoneThe professor's email address.
phone_numberstringfalsenoneThe professor's phone number.
officeLocationfalsenoneThe location of the professor's office.
profile_uristringfalsenoneA hyperlink pointing to the professor's official university profile.
image_uristringfalsenoneA link to the image used for the professor on the professor's official university profile.
office_hours[Meeting]falsenoneA list of all office hours of the professor.
sections[string]falsenoneA list of references to sections a professor is currently teaching or has taught. This will be sorted in descending order with respect to end_date in the section's academic_session

Requirement

{
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
typeanytruenonenone

Section

Sections are the lowest level unit of organization for a class at UT Dallas. A section represents a specific instance of a course taught during a specific semester by a specific professor, at a specific time.

{
"_id": "string",
"section_number": "string",
"course_reference": "string",
"section_corequisites": {
"name": "string",
"required": 0,
"options": [
{
"type": null
}
],
"type": null
},
"academic_session": {
"name": "string",
"start_date": "string",
"end_date": "string"
},
"professors": ["string"],
"teaching_assistants": [
{
"first_name": "string",
"last_name": "string",
"role": "string",
"email": "string"
}
],
"internal_class_number": "string",
"instruction_mode": "string",
"meetings": [
{
"start_date": "string",
"end_date": "string",
"meeting_days": ["string"],
"start_time": "string",
"end_time": "string",
"modality": "string",
"location": {
"building": "string",
"room": "string",
"map_uri": "string"
}
}
],
"core_flags": ["string"],
"syllabus_uri": "string",
"grade_distribution": [0]
}

Properties

NameTypeRequiredRestrictionsDescription
_idstringtruenoneThe id represents the primary key associated with the section
section_numberstringtruenoneThis is the number associated with the course during its semester eg. .001
course_referencestringtruenoneThe course reference represents a foreign key to the course record
section_corequisitesCollectionRequirementfalsenoneAll of the classes that must be taken alongside this section eg. A lab for a science course
academic_sessionAcademicSessiontruenoneThe name of the academic session of the section
professors[string]truenoneAn array of references to professor objects associated with this section
teaching_assistants[Assistant]falsenoneAn array of all TA's associated with this section
internal_class_numberstringtruenoneThe internal representation of the class number unique id from university
instruction_modestringtruenoneThe modality the course is taught it eg. Online, In Person, Hybrid
meetings[Meeting]truenoneAll of the meeting information associated with a section
core_flags[string]falsenoneInformation if the course counts as a core credit for one of the core subject areas
syllabus_uristringtruenoneLink to the syllabus for the section listed on coursebook
grade_distribution[integer]falsenoneAn array representing the distribution of grades for this section

SectionRequirement

{
"section_reference": "string",
"type": null
}

Properties

NameTypeRequiredRestrictionsDescription
section_referencestringtruenonenone

allOf - discriminator: Requirement.type

NameTypeRequiredRestrictionsDescription
anonymousRequirementfalsenonenone

and

NameTypeRequiredRestrictionsDescription
anonymousobjectfalsenonenone